"use strict"

/**
 * @后端操作
 */

// 导入node方法
import { nodeXlsxToAoa, nodeAoaToJsFile } from "./node-progress.js"
// 导入crypto方法
import { aesEncrypt, importAesKey, bufferToArray } from "../src/scripts/crypt.js"

// 读取xlsx文件为AOA对象
const aoa = nodeXlsxToAoa("./data.xlsx")
// 从第2行开始，分别为学号、姓名、期中成绩、期末成绩
// console.log(aoa)

// 学号索引
const checkArr = []
// 期中索引
const codenArr = []
// 期末索引
const cipherAoa = []

// 开始处理成绩
for (let i = 1; i < aoa.length; i++) {
  // 用学号生成AES密钥key
  const key = await importAesKey(aoa[i][0].toString())
  // 用AES密钥加密学号
  const xueHao = await aesEncrypt(aoa[i][0].toString(), key)
  // 学号密文转为Array
  const xueHaoArr = bufferToArray(xueHao)
  // 文本化后加进学号索引里
  checkArr.push(JSON.stringify(xueHaoArr))

  // 用AES密钥加密期中成绩
  const qiZhong = await aesEncrypt(aoa[i][2].toString(), key)
  // 期中成绩密文转为Array
  const qiZhongArr = bufferToArray(qiZhong)
  // 文本化后加进期中索引里
  codenArr.push(JSON.stringify(qiZhongArr))

  // 用AES密钥加密期末成绩
  const qiMo = await aesEncrypt(aoa[i][3].toString(), key)
  // 期末成绩密文转为Array
  const qiMoArr = bufferToArray(qiMo)
  // 直接加进期末索引里
  cipherAoa.push(qiMoArr)

}

// 检查一下
// console.log("checkArr: ", checkArr)
// console.log("codenArr: ", codenArr)
// console.log("cipherAoa: ", cipherAoa)

// 处理完毕，写文件
// 学号
nodeAoaToJsFile(checkArr, "./checkArr.js")
// 期中
nodeAoaToJsFile(codenArr, "./codenArr.js")
// 期末
nodeAoaToJsFile(cipherAoa, "./cipherAoa.js")
